<?php

namespace app\admin\controller;

use app\common\controller\Backend;
use think\Db;
use think\Cache;
use think\Request;

/**
 * 自定义资料块管理
 *
 * @icon fa fa-circle-o
 */
class Myblock extends Backend
{
    
    /**
     * Myblock模型对象
     * @var \app\admin\model\Myblock
     */
    protected $model = null;

    public function _initialize()
    {
        parent::_initialize();
        $this->model = new \app\admin\model\Myblock;
        $this->view->assign("statusList", $this->model->getStatusList());
    }
    
    /**
     * 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法
     * 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑
     * 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改
     */
    
    /**
     * 增加
     */
    public function add()
    {
        if ($this->request->isPost()) {
            $params = $this->request->post("row/a");
            if ($params['name']=='') {
                $this->error(__('请填写名称'));
            }
            if ($params['code']=='') {
                $this->error(__('请填写调用名称'));
            }
            //判断code是否已经存在
            $n= Db::name("myblock")->where('code', 'eq', $params['code'])->count();
            if ($n>0) {
                $this->error('调用名称已经存在！');
            }
            //
            $pre='mb_'; //cache前缀
            //保存
            $this->model->name=$params['name'];
            $this->model->code=$params['code'];
            $this->model->status=$params['status'];
            if ($params['status']==1) {
                if ($params['content2']=='') {
                    $this->error(__('请填写富文本内容'));
                }
                $this->model->content=$params['content2'];
                Cache::tag('myblock')->set($pre.$params['code'], array($params['name'],$params['content2']), 0);
            } elseif ($params['status']==2) {
                if ($params['files']=='') {
                    $this->error(__('请上传文件'));
                }
                $arr=array('files'=>$params['files'],'intro'=>$params['intro']);
                $this->model->content=json_encode($arr, true);
                //处理数据,将文件，文件附加属性 组合成一个二维数组保存到cache中,方便前端调用
                $i=0;
                $new=array();
                $files=explode(',', $params['files']);  //处理文件地址数据
                $intro=json_decode($params['intro'], true); //处理文件附加属性数据
                foreach ($files as $v) {
                    $new[$i]['file']=$v;
                    $new[$i]['attr']=$intro[$i];
                    $i++;
                }
                Cache::tag('myblock')->set($pre.$params['code'], array($params['name'],json_encode($new)), 0);
            } elseif ($params['status']==3) {
                if ($params['basic']=='') {
                    $this->error(__('请输入数据列表'));
                }
                $this->model->content=$params['basic'];
                Cache::tag('myblock')->set($pre.$params['code'], array($params['name'],$params['basic']), 0);
            } else {
                if ($params['content']=='') {
                    $this->error(__('请填写文本内容'));
                }
                $this->model->content=$params['content'];
                Cache::tag('myblock')->set($pre.$params['code'], array($params['name'],$params['content']), 0);
            }
            $result=$this->model->save();
            //
            $this->success();
        }
        return $this->view->fetch();
    }
    
    /**
     * 编辑
     */
    public function edit($ids = null)
    {
        $row = $this->model->get($ids);
        if (!$row) {
            $this->error(__('No Results were found'));
        }
        if ($this->request->isPost()) {
            $params = $this->request->post("row/a");
            if ($params['name']=='') {
                $this->error(__('请填写名称'));
            }
            if ($params['code']=='') {
                $this->error(__('请填写调用名称'));
            }
            //判断code是否已经存在
            $n= Db::name("myblock")->where('code', 'eq', $params['code'])->where('id', 'neq', $row['id'])->count();
            if ($n>0) {
                $this->error('调用名称已经存在！');
            }
            //
            $pre='mb_'; //cache前缀
            //保存
            $row->name=$params['name'];
            $row->code=$params['code'];
            $row->status=$params['status'];
            if ($params['status']==1) {
                if ($params['content2']=='') {
                    $this->error(__('请填写富文本内容'));
                }
                $row->content=$params['content2'];
                Cache::tag('myblock')->set($pre.$params['code'], array($params['name'],$params['content2']), 0);
            } elseif ($params['status']==2) {
                if ($params['files']=='') {
                    $this->error(__('请上传文件'));
                }
                $arr=array('files'=>$params['files'],'intro'=>$params['intro']);
                $row->content=json_encode($arr, true);
                //处理数据,将文件，文件附加属性 组合成一个二维数组保存到cache中,方便前端调用
                $i=0;
                $new=array();
                $files=explode(',', $params['files']);  //处理文件地址数据
                $intro=json_decode($params['intro'], true); //处理文件附加属性数据
                foreach ($files as $v) {
                    $new[$i]['file']=$v;
                    $new[$i]['attr']=$intro[$i];
                    $i++;
                }
                //
                Cache::tag('myblock')->set($pre.$params['code'], array($params['name'],json_encode($new)), 0);
            } elseif ($params['status']==3) {
                if ($params['basic']=='') {
                    $this->error(__('请输入数据列表'));
                }
                $this->model->content=$params['basic'];
                Cache::tag('myblock')->set($pre.$params['code'], array($params['name'],$params['basic']), 0);
            } else {
                if ($params['content']=='') {
                    $this->error(__('请填写文本内容'));
                }
                $row->content=$params['content'];
                Cache::tag('myblock')->set($pre.$params['code'], array($params['name'],$params['content']), 0);
            }
            $result=$row->save();
            //
            $this->success();
        }
        //如果是文件，则进行数据处理
        $files='';
        $intro='';
        if ($row['status']=='2') {
            $arr=json_decode($row['content'], true);
            $files=$arr['files']; //文件列表
            $intro=$arr['intro']; //文件附加属性
        }
        $this->view->assign("files", $files);
        $this->view->assign("intro", $intro);
        //
        $this->view->assign("row", $row);
        return $this->view->fetch();
    }
    /**
     * 获取拼音
     */
    public function pinyin()
    {
        if (Request::instance()->isAjax()) {
            $title=input('name');
            $py=\fast\Pinyin::get($title);
            if (strlen($py)>15) {
                $py=\fast\Pinyin::get($title, true);
            }
            $this->success(strtolower($py));
        }
    }
}
